﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Generic.Contract;

namespace Contract.Business.Entity
{
    //Criado por : Gustavo
    //Data       : 12/20/2011 6:42:54 PM
    public class BEConfiguracao : BEGeneric
    {
        #region Atributos
        private BEGrupo _GrupoPizza;
        private int _CodigoGrupoPizza;
        private BEGrupo _GrupoBebida;
        private int _CodigoGrupoBebida;
        private int? _CodigoTamanhoPizzaGrande;
        private int? _CodigoTamanhoPizzaMedia;
        private int? _CodigoTamanhoPizzaPequena;
        private int? _CodigoSubGrupoSuco;
        private int? _CodigoSubGrupoClassic;
        private int? _CodigoTipoPagamentoCupom;
        private string _Nome;
        private short? _CodigoImpressora;
        private string _Porta;
        private int _CodigoLoja;
        private bool _NovidadeVisualizada;
        private bool _AplicaPromocaoDiaria;
        private decimal _ValorBorda;

        #endregion

        #region Propriedades
        public BEGrupo GrupoPizza
        {
            get
            {
                return this._GrupoPizza;
            }
            set
            {
                BEGrupo previousValue = this._GrupoPizza;
                if ((previousValue == null) || (!previousValue.Equals(value)))
                {
                    this.SendPropertyChanging();
                    this._GrupoPizza = value;
                    if (value != null)
                    {
                        this._CodigoGrupoPizza = value.Codigo;
                    }
                    else
                    {
                        this._CodigoGrupoPizza = default(int);
                    }
                    this.SendPropertyChanged("GrupoPizza");
                }
            }
        }

        public int CodigoLoja
        {
            get
            {
                return this._CodigoLoja;
            }
            set
            {
                if (this._CodigoLoja != value)
                {
                    this.SendPropertyChanging();
                    this._CodigoLoja = value;
                    this.SendPropertyChanged("CodigoLoja");
                }
            }
        }

        public int CodigoGrupoPizza
        {
            get
            {
                return this._CodigoGrupoPizza;
            }
            set
            {
                if (this._CodigoGrupoPizza != value)
                {
                    this.SendPropertyChanging();
                    this._CodigoGrupoPizza = value;
                    this.SendPropertyChanged("CodigoGrupoPizza");
                }
            }
        }

        public BEGrupo GrupoBebida
        {
            get
            {
                return this._GrupoBebida;
            }
            set
            {
                BEGrupo previousValue = this._GrupoBebida;
                if ((previousValue == null) || (!previousValue.Equals(value)))
                {
                    this.SendPropertyChanging();
                    this._GrupoBebida = value;
                    if (value != null)
                    {
                        this._CodigoGrupoBebida = value.Codigo;
                    }
                    else
                    {
                        this._CodigoGrupoBebida = default(int);
                    }
                    this.SendPropertyChanged("GrupoBebida");
                }
            }
        }

        public int CodigoGrupoBebida
        {
            get
            {
                return this._CodigoGrupoBebida;
            }
            set
            {
                if (this._CodigoGrupoBebida != value)
                {
                    this.SendPropertyChanging();
                    this._CodigoGrupoBebida = value;
                    this.SendPropertyChanged("CodigoGrupoBebida");
                }
            }
        }

        public string Nome
        {
            get
            {
                return this._Nome;
            }
            set
            {
                if (this._Nome != value)
                {
                    this.SendPropertyChanging();
                    this._Nome = value;
                    this.SendPropertyChanged("Nome");
                }
            }
        }

        public int? CodigoTamanhoPizzaGrande
        {
            get
            {
                return this._CodigoTamanhoPizzaGrande;
            }
            set
            {
                if (this._CodigoTamanhoPizzaGrande != value)
                {
                    this.SendPropertyChanging();
                    this._CodigoTamanhoPizzaGrande = value;
                    this.SendPropertyChanged("CodigoTamanhoPizzaGrande");
                }
            }
        }

        public int? CodigoTamanhoPizzaMedia
        {
            get
            {
                return this._CodigoTamanhoPizzaMedia;
            }
            set
            {
                if (this._CodigoTamanhoPizzaMedia != value)
                {
                    this.SendPropertyChanging();
                    this._CodigoTamanhoPizzaMedia = value;
                    this.SendPropertyChanged("CodigoTamanhoPizzaMedia");
                }
            }
        }

        public int? CodigoTamanhoPizzaPequena
        {
            get
            {
                return this._CodigoTamanhoPizzaPequena;
            }
            set
            {
                if (this._CodigoTamanhoPizzaPequena != value)
                {
                    this.SendPropertyChanging();
                    this._CodigoTamanhoPizzaPequena = value;
                    this.SendPropertyChanged("CodigoTamanhoPizzaPequena");
                }
            }
        }

        public int? CodigoSubGrupoSuco
        {
            get
            {
                return this._CodigoSubGrupoSuco;
            }
            set
            {
                if (this._CodigoSubGrupoSuco != value)
                {
                    this.SendPropertyChanging();
                    this._CodigoSubGrupoSuco = value;
                    this.SendPropertyChanged("CodigoSubGrupoSuco");
                }
            }
        }

        public int? CodigoSubGrupoClassic
        {
            get
            {
                return this._CodigoSubGrupoClassic;
            }
            set
            {
                if (this._CodigoSubGrupoClassic != value)
                {
                    this.SendPropertyChanging();
                    this._CodigoSubGrupoClassic = value;
                    this.SendPropertyChanged("CodigoSubGrupoClassic");
                }
            }
        }

        public int? CodigoTipoPagamentoCupom
        {
            get
            {
                return this._CodigoTipoPagamentoCupom;
            }
            set
            {
                if (this._CodigoTipoPagamentoCupom != value)
                {
                    this.SendPropertyChanging();
                    this._CodigoTipoPagamentoCupom = value;
                    this.SendPropertyChanged("CodigoTipoPagamentoCupom");
                }
            }
        }

        public short? CodigoImpressora
        {
            get
            {
                return this._CodigoImpressora;
            }
            set
            {
                if (this._CodigoImpressora != value)
                {
                    this.SendPropertyChanging();
                    this._CodigoImpressora = value;
                    this.SendPropertyChanged("CodigoImpressora");
                }
            }
        }

        public string Porta
        {
            get
            {
                return this._Porta;
            }
            set
            {
                if (this._Porta != value)
                {
                    this.SendPropertyChanging();
                    this._Porta = value;
                    this.SendPropertyChanged("Porta");
                }
            }
        }

        public bool NovidadeVisualizada
        {
            get
            {
                return this._NovidadeVisualizada;
            }
            set
            {
                if (this._NovidadeVisualizada != value)
                {
                    this.SendPropertyChanging();
                    this._NovidadeVisualizada = value;
                    this.SendPropertyChanged("NovidadeVisualizada");
                }
            }
        }

        public bool AplicaPromocaoDiaria
        {
            get
            {
                return this._AplicaPromocaoDiaria;
            }
            set
            {
                if (this._AplicaPromocaoDiaria != value)
                {
                    this.SendPropertyChanging();
                    this._AplicaPromocaoDiaria = value;
                    this.SendPropertyChanged("AplicaPromocaoDiaria");
                }
            }
        }

        public decimal ValorBorda
        {
            get
            {
                return this._ValorBorda;
            }
            set
            {
                if (this._ValorBorda != value)
                {
                    this.SendPropertyChanging();
                    this._ValorBorda = value;
                    this.SendPropertyChanged("ValorBorda");
                }
            }
        }
        #endregion

        #region Métodos Override
        public override string ToString()
        {
            return this.Nome;
        }

        public override bool Equals(object obj)
        {
            try
            {
                return this.Codigo == ((BEConfiguracao)obj).Codigo;
            }
            catch (Exception)
            {
                return false;
            }
        }
        #endregion
    }
}
